<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        .outter {
            width: 200px;
            height: 200px;
            background-color: #f00;
        }
        .inner {
            width: 100px;
            height: 100px;
            background-color: #0f0;
        }
        .middle {
            width: 50px;
            height: 50px;
            background-color: #00f;
        }
    </style>
</head>
<body>

    <!-- <main class="outter">
        outter
        <section class="inner">inner
            <section class="middle">
                middle
            </section>
        </section>
    </main> -->

    <script>

        // const outter = document.querySelector('.outter')
        // const inner = document.querySelector('.inner')
        // const middle = document.querySelector('.middle')

        // outter.addEventListener('click', function() {
        //     alert('outter')
        // })

        // // inner.addEventListener('click', function() {
        // //     alert('inner')
        // // }, true)

        // middle.addEventListener('click', function(e) {
        //     alert('middle')
        //     // e.defaultPrevented()
        //     e.preventDefault()
        // })

    </script>
    
    <script>
        // 对象设计
        // const obj = new Object()
        // console.log('🚀 ~ This is a result of console.log ~ ✨: ', obj);
        // Object.defineProperty(obj, 'a', {
        //     writable: true,
        //     configurable: true,
        //     enumerable: true, // 是否可以被枚举
        //     value: 1
        // })
        // // 获取对象身上的属性
        // console.log('🚀 ~ This is a result of console.log ~ ✨: ', Object.getOwnPropertyDescriptors(obj));
        // // 获取对象身上的自由属性
        // console.log('🚀 ~ This is a result of console.log ~ ✨: ', Object.getOwnPropertyNames(obj)); 

        // function MyObj () {

        // }

        // MyObj.prototype.a = 1
        // MyObj.prototype.b =  {
        //     val: 12
        // }

        // const obj = new MyObj()

        // obj.a = 11212 // 新增
        // obj.c = 10 // 新增
        // console.log('🚀 ~ This is a result of console.log ~ ✨: ', obj); // {a: 11212, c: 10}
        // obj.b.val = 11 // 这一步执行覆盖， 修改原型链上的数据
        // console.log('🚀 ~ This is a result of console.log ~ ✨: ', obj); // {a: 11212, c: 10}


        // const body = document.body
        // const div = document.createElement('div')
        // const text = document.createTextNode('hello world')
        // div.appendChild(text)
        // div.setAttribute("id", 'div1')
        // body.appendChild(div)        
        // console.dir(div)

        // console.log('🚀 ~ This is a result of console.log ~ ✨: ', div);

        async function test () {
            try {
                const res =  await 0/a
            } catch (err) {
                console.log('🚀 ~ This is a result of console.log ~ ✨: ', err); // ReferenceError: a is not defined
            }
        }

        test()

    </script>
</body>
</html>
